package uy.edu.ort.cliente;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import uy.edu.ort.utils.Utils;
import uy.edu.ort.ws.AdministradorWS;
import uy.edu.ort.ws.AdministradorWS_Service;

/**
 *
 * @author Leo
 */
public class Cliente {
    
    public static String crearFuente(String nombre, String responsable) {
        String ret;
        URL url = null;
        try {
            String wsdl = String.format("http://%s:%s/AdministradorWS/AdministradorWS?wsdl",
                   Utils.getPropertiesValue("webservice.server"),
                   Utils.getPropertiesValue("webservice.port"));
            url = new URL(wsdl);
        } catch (MalformedURLException ex) {
            Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            AdministradorWS servicioWS = new AdministradorWS_Service(url).getAdministradorWSPort();
            ret = servicioWS.crearFuente(nombre, responsable).toString();
            ret = "El ID de la fuente es: " + ret;
        } catch (Exception ex) {
            ret = "No se pudo realizar la transacción";
        }
        
        return ret;
    }
    
    public static boolean login(String usuario, String contraseña) {
        boolean ret = false;
        URL url = null;
        try {
            String wsdl = String.format("http://%s:%s/AdministradorWS/AdministradorWS?wsdl",
                   Utils.getPropertiesValue("webservice.server"),
                   Utils.getPropertiesValue("webservice.port"));
            url = new URL(wsdl);
        } catch (MalformedURLException ex) {
            Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            AdministradorWS servicioWS = new AdministradorWS_Service(url).getAdministradorWSPort();
            ret = servicioWS.login(usuario, contraseña);
        } catch (Exception ex) {
            ret = false;
        }
        return ret;
    }
    
    public static String autorizarFuente(String idFuente, String codigoAut) {
        String ret = "Fuente autorizada con exito";
        URL url = null;
        try {
            String wsdl = String.format("http://%s:%s/AdministradorWS/AdministradorWS?wsdl",
                   Utils.getPropertiesValue("webservice.server"),
                   Utils.getPropertiesValue("webservice.port"));
            url = new URL(wsdl);
        } catch (MalformedURLException ex) {
            Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            AdministradorWS servicioWS = new AdministradorWS_Service(url).getAdministradorWSPort();
            Long Id = Long.parseLong(idFuente);
            boolean retorno = servicioWS.autorizarFuente(Id, codigoAut);
            if(!retorno) { ret = "No se pudo autorizar la fuente";}
        } catch (Exception ex) {
            ret = "No se pudo autorizar la fuente";
        }
        return ret;
    }
    
    public static String eliminarFuente(String idFuente) {
        String ret = "Fuente eliminada con exito";
        URL url = null;
        try {
            String wsdl = String.format("http://%s:%s/AdministradorWS/AdministradorWS?wsdl",
                   Utils.getPropertiesValue("webservice.server"),
                   Utils.getPropertiesValue("webservice.port"));
            url = new URL(wsdl);
        } catch (MalformedURLException ex) {
            Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            AdministradorWS servicioWS = new AdministradorWS_Service(url).getAdministradorWSPort();
            Long Id = Long.parseLong(idFuente);
            boolean retorno = servicioWS.eliminarFuente(Id);
             if(!retorno) { ret = "Fuente no existente.";}
        } catch (Exception ex) {
            ret = "No se pudo eliminar la fuente";
        }
        return ret;
    }
    
    public static String encriptar(String texto)
    {
       return Utils.EncriptarDatos(texto);
    }
     public static String desencriptar(String texto)
    {
       return Utils.DesencriptarDatos(texto);
    }
     
}
